你可以透過允許background mode滿足定時從server抓取資料
我們可以設定獲取資料的間隔(setMinimumBackgroundFetchInterval()),但是還是要由ios系統來決定什麼時候要讓你更新資料~ 如果希望間隔越小越好,可以直接設定成UIApplicationBackgroundFetchIntervalMinimum
如果我們的app退入背景,需要花一些時間上傳資料到server上,我們可以透過beginBackgroundTask和endBackgroundTask來執行long time task.
範例如下:
self.backgroundTaskID = UIApplication.shared.
beginBackgroundTask (withName: "Finish Network Tasks") {
// Your long time task .............
UIApplication.shared.endBackgroundTask(self.backgroundTaskID!) //call endBackgroundTask when your task is complete
self.backgroundTaskID = UIBackgroundTaskInvalid
}
//ref: https://developer.apple.com/documentation/uikit/core_app/managing_your_app_s_life_cycle/preparing_your_app_to_run_in_the_background/extending_your_app_s_background_execution_time?fbclid=IwAR360sEZVY-CTsJHNyks6Mvx9Im-osgQ5LfNuuhwotASphWP4TJUbWoERFI
想要在app在背景時接收通知,我們一樣可以在Capabilties中去設定(p.s app不是關閉狀態),如下圖所示。
這樣當app在背景時,我們可以接收通知,進而做一些我們想要做的事(ex: 跳出系統橫幅通知或是更新資料或更新UI)
注意server需要有APNS的憑證,這樣才能收到通知
ref: https://www.kancloud.cn/digest/ios-push-hherima/125549
詳細教學請參考:
https://www.appcoda.com.tw/push-notification-ios/
想要在app在背景或關閉時接收VOIP通話,我們一樣可以在Capabilties中去設定,如下圖所示。
注意需要搭配Pushkit及server需要有VOIP的憑證,這樣才能通知我們的app有VOIP通話。收到VOIP通話後,需要使用Callkit來讓iphone在鎖定螢幕的時候,可以跳出來電UI。如果不串Callkit,那我們只能用系統橫幅通知來提示使用者有來電。
ref: https://www.jianshu.com/p/f9bef7e7a4ab